package com.ydd.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ydd.constant.MessageConstant;
import com.ydd.dto.AddTabPagDTO;
import com.ydd.dto.TabPagDTO;
import com.ydd.dto.TabPaginationDTO;
import com.ydd.entity.YddTag;
import com.ydd.mapper.YddTagMapper;
import com.ydd.result.Result;
import com.ydd.service.IYddTagService;
import com.ydd.vo.TabPaginationVO;
import com.ydd.vo.YddTagVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author itcast
 * @since 2023-05-15
 */
@Service
public class YddTagServiceImpl extends ServiceImpl<YddTagMapper, YddTag> implements IYddTagService {
    @Autowired
    private YddTagMapper yddTagMapper;

    @Override
    public Result<TabPaginationVO> getLabelList(TabPaginationDTO dto) {
        PageHelper.startPage(dto.getPage(),dto.getLimit());
        Page<YddTag> list=yddTagMapper.getLabelList(dto);
        TabPaginationVO vo = new TabPaginationVO();
//        int size = list.size();
        //列表数据
        vo.setData(list);
        //总数
        vo.setCount((int)list.getTotal());
        //每页数量
        vo.setPageSize(dto.getLimit());
        //当前页数
        vo.setCurrentPage(dto.getPage());
//        vo.setTotalPages(count/size+1);
        return Result.success(vo);
    }

    @Override
    public Result getLabelId(String id) {
        YddTag labelId = yddTagMapper.getLabelId(id);
        return Result.success(labelId);
    }

    @Override
    @Transactional
    public Result updateLabel(TabPagDTO dto) {

        if (dto.getId()==null){
            return Result.error(MessageConstant.ID_NOT_FOUND);
        }

        List<YddTag> id = yddTagMapper.selectList(dto.getId());

        for (YddTag yddTag : id) {
            if (dto.getTagname().equals(yddTag.getTagname())) {
                return Result.error(MessageConstant.UNKNOWN_ERROR);
            }
        }
        yddTagMapper.updateLabel(dto);
        return Result.success();
    }

    @Override
    @Transactional
    public Result addlabel(AddTabPagDTO addTabPag) {


        yddTagMapper.addlabel(addTabPag);
        return Result.success();
    }

    @Override
    public Result deleteLabel(String id) {
        if (id==null){
            return Result.error(MessageConstant.ID_NOT_FOUND);
        }
        yddTagMapper.deleteById(id);
        return Result.success();
    }

    @Override
    public Result getAll() {
        List<YddTagVO> all = yddTagMapper.getAll();
        return Result.success(all);
    }
}
